package biblio;

import java.util.GregorianCalendar;


/**
 * Classe de gestion du controle du cas d'utilisation "Rendre un exemplaire non disponible".
 * @author IUT, refactor� par E. Ceret
 * @version 2.0
 *
 */
public class CtrNouvOuvrage {

	// ************************************************************************************************************
	// Constantes
	// ************************************************************************************************************

	private static final long serialVersionUID = 1L;
	
	// ************************************************************************************************************
	// Attributs
	// ************************************************************************************************************

	private Bibliotheque _bibliotheque;

	// ************************************************************************************************************
	// Constructeur
	// ************************************************************************************************************

	/**
	 * Constructeur.
	 * @param bibliotheque biblioth�que � laquelle ce contr�leur est li�.
	 */
	public CtrNouvOuvrage(Bibliotheque bibliotheque) {

		// Liaison avec l'appli "Bibliotheque"
		this.lierBibliotheque(bibliotheque);
	} // Fin Constructeur

	// ************************************************************************************************************
	// M�thodes priv�es
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Accesseurs

	private Bibliotheque getBibliotheque() {
		return _bibliotheque;
	}
	
	// ------------------------------------------------------------------------------------------------------------
	// Affecteurs

	private void lierBibliotheque(Bibliotheque bibliotheque) {
	    _bibliotheque = bibliotheque;
	} // Fin lierBibliotheque
	
	// ************************************************************************************************************
	// M�thodes publiques
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Traitements

	public void nouvOuvrage() {
		EntreesSorties.afficherTitre("Ajout d'un ouvrage");

		String isbn = EntreesSorties.lireChaine("Numero ISBN :");
		
		// Verification de l'existence de l'ouvrage sur son numero isbn
		Ouvrage ouvrage = this.getBibliotheque().getOuvrage(isbn);
		
		if (ouvrage == null) { // L'ouvrage n'existe pas
			
			// Saisie de toutes les infos de l'ouvrage
			String titre = EntreesSorties.lireChaine("Titre    : ");			
			String editeur = EntreesSorties.lireChaine("Editeur  : ");
			GregorianCalendar dateEdition = EntreesSorties.lireDate("Date d'edition (JJ/MM/AAAA): ");

			// Demande d'ajout d'un nouvel ouvrage
			ouvrage = this.getBibliotheque().nouvelOuvrage(isbn, titre, editeur, dateEdition);
			
			
			
			//Saisie des auteurs de l'ouvrage
			EntreesSorties.afficherMessage("Auteurs   : ");
			
			int k = EntreesSorties.lireEntier("		Nombre d'auteurs    : ");

			String nom = "";
			String prenom = "";
			
			 
								
				for (int i=1; i<k+1; i++) {
					
					if (i==1){
						
						 EntreesSorties.afficherMessage(i + "er auteur :  ");
						 nom = EntreesSorties.lireChaine("Nom :  ");
						 prenom = EntreesSorties.lireChaine("Prénom :  ");
						
					}
					else
					{
						 EntreesSorties.afficherMessage(i + "e auteur :  ");
					 	 nom = EntreesSorties.lireChaine("Nom :  ");
					 	 prenom = EntreesSorties.lireChaine("Prénom :  ");
					 	 
						 
					}
					// Demande d'ajout de l'auteur
					this.getBibliotheque().nouvelAuteur(ouvrage,nom, prenom);
					 
				}
			
			// Cr�ation de la vue Exemplaire
			VueOuvrage vueOuvrage = new VueOuvrage(ouvrage);

			// Affichage de l'exemplaire
			vueOuvrage.afficherTout();
			
			// Suppression de la vue vueExemplaire comme Observatrice de l'objet exemplaire
			vueOuvrage.elimineObserveur();
			
			// Remise � null de la variable, ce qui aura pour effet de d�truire l'objet vueExemplaire (pas
			// d'autre variable qui le r�f�rence)
			vueOuvrage = null;
		} else {
			EntreesSorties.afficherMessage("Ouvrage deja existant.");
		}
	} // Fin nouvOuvrage

} // Fin Classe CtrNouvOuvrage
